package com.crawler.system.dto;

import lombok.Data;

import java.io.Serializable;

/**
 * 页面交互DTO
 * 用于定义页面交互操作，如点击、输入、滚动等
 */
@Data
public class PageInteractionDTO implements Serializable {

    private static final long serialVersionUID = 1L;

    /**
     * 交互顺序
     * 数值越小越先执行
     */
    private Integer order;

    /**
     * 交互类型
     * CLICK: 点击
     * SCROLL: 滚动
     * INPUT: 输入
     * HOVER: 悬停
     * WAIT: 等待
     * SCRIPT: 执行脚本
     */
    private String type;

    /**
     * 选择器
     */
    private String selector;

    /**
     * 选择器类型
     * CSS: CSS选择器
     * XPATH: XPath选择器
     */
    private String selectorType = "CSS";

    /**
     * 输入值
     * 当type为INPUT时使用
     */
    private String value;

    /**
     * 等待时间(毫秒)
     * 当type为WAIT时使用
     */
    private Integer waitTime;

    /**
     * 滚动X轴距离(像素)
     * 当type为SCROLL时使用
     */
    private Integer scrollX;

    /**
     * 滚动Y轴距离(像素)
     * 当type为SCROLL时使用
     */
    private Integer scrollY;

    /**
     * 滚动距离(像素)
     * 当type为SCROLL时使用
     */
    private Integer scrollDistance;

    /**
     * 滚动方向
     * DOWN: 向下滚动
     * UP: 向上滚动
     * LEFT: 向左滚动
     * RIGHT: 向右滚动
     */
    private String scrollDirection = "DOWN";

    /**
     * 自定义脚本
     * 当type为SCRIPT时使用
     */
    private String script;
} 
